package com.zz.ecommerce.pojo;

import com.zz.bundles.cache.dict.DictTag;
import com.zz.ecommerce.utils.SqlType;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 支付(放行)凭证
 */
public class CbecPayment implements Serializable {
    private static final long serialVersionUID = 790947828437389651L;

    /**
     * 唯一主键
     */
    private String id;

    /**
     * 支付企业代码,10位海关代码或者18位信用代码或参照其他行业编号
     */
    private String payCode;

    /**
     * 支付企业名称
     */
    private String payName;

    /**
     * 支付交易编号
     */
    private String payTransactionId;

    /**
     * 订单编号,电商平台原始订单编号
     */
    private String orderNo;

    /**
     * 电商平台代码
     */
    private String ebpCode;

    /**
     * 电商平台名称
     */
    private String ebpName;

    /**
     * 支付人证件类型(1=身份证，2=其他)
     */
    private String payerIdType;

    /**
     * 支付人证件号码
     */
    private String payerId;

    /**
     * 支付人姓名
     */
    private String payerName;

    /**
     * 支付人电话
     */
    private String payerPhone;

    /**
     * 支付金额
     */
    private BigDecimal amountPaid;

    /**
     * 支付币制,海关参数代码
     */
    private String currency;

    /**
     * 支付时间
     */
    @SqlType(type = "date", format = "yyyy-mm-dd hh24:mi:ss", qryStart = "payDateStart", qryEnd = "payDateEnd")
    private String payDate;

    @SqlType(inTable = false, type = "date", format = "yyyy-MM-dd hh24:mi:ss")
    private String payDateStart;

    @SqlType(inTable = false, type = "date", format = "yyyy-MM-dd hh24:mi:ss")
    private String payDateEnd;

    /**
     * 备注
     */
    private String note;

    /**
     * 版本号（默认1.0）
     */
    private String version;

    /**
     * 系统唯一序号（36位  英文字母大写）
     */
    private String guid;

    /**
     * 业务时间,格式:YYYYMMDDhhmmss
     */
    @SqlType(type = "date", format = "yyyy-MM-dd hh24:mi:ss")
    private String appDate;

    /**
     * 接入平台编号
     */
    private String appSenderId;

    /**
     * 最后修改时间
     */
    private Date lastModifyDate;

    /**
     * 创建时间，引用清单的申报日期
     */
    private Date createDate;

    /**
     * 操作员编码
     */
    private String operId;

    /**
     * 组织机构编码
     */
    private String orgId;

    /**
     * 状态
     */
    private String status;

    /**
     * 状态时间
     */
    @SqlType(type = "date", format = "yyyy-MM-dd hh24:mi:ss")
    private String statusTime;


    /**
     * @return 唯一主键
     */
    public String getId() {
        return id;
    }

    /**
     * @param id 唯一主键
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * @return 支付企业代码, 10位海关代码或者18位信用代码或参照其他行业编号
     */
    public String getPayCode() {
        return payCode;
    }

    /**
     * @param payCode 支付企业代码,10位海关代码或者18位信用代码或参照其他行业编号
     */
    public void setPayCode(String payCode) {
        this.payCode = payCode;
    }

    /**
     * @return 支付企业名称
     */
    public String getPayName() {
        return payName;
    }

    /**
     * @param payName 支付企业名称
     */
    public void setPayName(String payName) {
        this.payName = payName;
    }

    /**
     * @return 支付交易编号
     */
    public String getPayTransactionId() {
        return payTransactionId;
    }

    /**
     * @param payTransactionId 支付交易编号
     */
    public void setPayTransactionId(String payTransactionId) {
        this.payTransactionId = payTransactionId;
    }

    /**
     * @return 订单编号, 电商平台原始订单编号
     */
    public String getOrderNo() {
        return orderNo;
    }

    /**
     * @param orderNo 订单编号,电商平台原始订单编号
     */
    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }

    /**
     * @return 电商平台代码
     */
    public String getEbpCode() {
        return ebpCode;
    }

    /**
     * @param ebpCode 电商平台代码
     */
    public void setEbpCode(String ebpCode) {
        this.ebpCode = ebpCode;
    }

    /**
     * @return 电商平台名称
     */
    public String getEbpName() {
        return ebpName;
    }

    /**
     * @param ebpName 电商平台名称
     */
    public void setEbpName(String ebpName) {
        this.ebpName = ebpName;
    }

    /**
     * @return 支付人证件类型(1=身份证，2=其他)
     */
    public String getPayerIdType() {
        return payerIdType;
    }

    /**
     * @return 支付人证件类型(1=身份证，2=其他)
     */
    public String getPayerIdTypeDisplay() {
        return "1".equals(payerIdType) ? "身份证" : "其他";
    }

    /**
     * @param payerIdType 支付人证件类型(1=身份证，2=其他)
     */
    public void setPayerIdType(String payerIdType) {
        this.payerIdType = payerIdType;
    }

    /**
     * @return 支付人证件号码
     */
    public String getPayerId() {
        return payerId;
    }

    /**
     * @param payerId 支付人证件号码
     */
    public void setPayerId(String payerId) {
        this.payerId = payerId;
    }

    /**
     * @return 支付人姓名
     */
    public String getPayerName() {
        return payerName;
    }

    /**
     * @param payerName 支付人姓名
     */
    public void setPayerName(String payerName) {
        this.payerName = payerName;
    }

    /**
     * @return 支付人电话
     */
    public String getPayerPhone() {
        return payerPhone;
    }

    /**
     * @param payerPhone 支付人电话
     */
    public void setPayerPhone(String payerPhone) {
        this.payerPhone = payerPhone;
    }

    /**
     * @return 支付金额
     */
    public BigDecimal getAmountPaid() {
        return amountPaid;
    }

    /**
     * @param amountPaid 支付金额
     */
    public void setAmountPaid(BigDecimal amountPaid) {
        this.amountPaid = amountPaid;
    }

    /**
     * @return 支付币制, 海关参数代码
     */
    public String getCurrency() {
        return currency;
    }

    /**
     * @return 币制
     */
    public String getCurrencyDisplay() {
        return DictTag.getCargoParamVal("S_CURRENCY_E", currency, "CODE_C", "NAME_C");
    }

    /**
     * @param currency 支付币制,海关参数代码
     */
    public void setCurrency(String currency) {
        this.currency = currency;
    }

    /**
     * @return 支付时间
     */
    public String getPayDate() {
        return payDate;
    }

    /**
     * @param payDate 支付时间
     */
    public void setPayDate(String payDate) {
        this.payDate = payDate;
    }

    /**
     * @return 备注
     */
    public String getNote() {
        return note;
    }

    /**
     * @param note 备注
     */
    public void setNote(String note) {
        this.note = note;
    }

    /**
     * @return 版本号（默认1.0）
     */
    public String getVersion() {
        return version;
    }

    /**
     * @param version 版本号（默认1.0）
     */
    public void setVersion(String version) {
        this.version = version;
    }

    /**
     * @return 系统唯一序号（36位  英文字母大写）
     */
    public String getGuid() {
        return guid;
    }

    /**
     * @param guid 系统唯一序号（36位  英文字母大写）
     */
    public void setGuid(String guid) {
        this.guid = guid;
    }

    /**
     * @return 业务时间, 格式:YYYYMMDDhhmmss
     */
    public String getAppDate() {
        return appDate;
    }

    /**
     * @param appDate 业务时间,格式:YYYYMMDDhhmmss
     */
    public void setAppDate(String appDate) {
        this.appDate = appDate;
    }

    /**
     * @return 接入平台编号
     */
    public String getAppSenderId() {
        return appSenderId;
    }

    /**
     * @param appSenderId 接入平台编号
     */
    public void setAppSenderId(String appSenderId) {
        this.appSenderId = appSenderId;
    }

    /**
     * @return 最后修改时间
     */
    public Date getLastModifyDate() {
        return lastModifyDate;
    }

    /**
     * @param lastModifyDate 最后修改时间
     */
    public void setLastModifyDate(Date lastModifyDate) {
        this.lastModifyDate = lastModifyDate;
    }

    /**
     * @return 创建时间，引用清单的申报日期
     */
    public Date getCreateDate() {
        return createDate;
    }

    /**
     * @param createDate 创建时间，引用清单的申报日期
     */
    public void setCreateDate(Date createDate) {
        this.createDate = createDate;
    }

    public String getPayDateStart() {
        return payDateStart;
    }

    public void setPayDateStart(String payDateStart) {
        this.payDateStart = payDateStart;
    }

    public String getPayDateEnd() {
        return payDateEnd;
    }

    public void setPayDateEnd(String payDateEnd) {
        this.payDateEnd = payDateEnd;
    }

    public String getOperId() {
        return operId;
    }

    public void setOperId(String operId) {
        this.operId = operId;
    }

    public String getOrgId() {
        return orgId;
    }

    public void setOrgId(String orgId) {
        this.orgId = orgId;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getStatusTime() {
        return statusTime;
    }

    public void setStatusTime(String statusTime) {
        this.statusTime = statusTime;
    }
}